import mongoose from 'mongoose';
import { loadEnvConfig } from './env.server';

loadEnvConfig();

const ALLOW_EXEC = process.env.NUXT_NEED_DATABASE === 'true';
const DB_NAME = process.env.NUXT_DATABASE_NAME || 'my_database';

let isConnected = false; // 确保只连接一次

export async function connect() {
  try {
    if (!ALLOW_EXEC) {
      console.warn('已关闭数据库配置！');
      return;
    }
    if (isConnected)
      return;
    await mongoose.connect(process.env.NUXT_DATABASE_URL as string, {
      // 移除 useNewUrlParser 和 useUnifiedTopology
      // 添加其他必要的连接选项
      dbName: DB_NAME,
      autoIndex: true, // 如果不需要自动创建索引，可以设置为 false
      maxPoolSize: 10, // 连接池大小优化：根据服务器配置调整maxPoolSize
      serverSelectionTimeoutMS: 5000, // 超时时间
      socketTimeoutMS: 45000, // 套接字超时时间
      family: 4, // 强制使用 IPv4
    });
    isConnected = true;
    console.log('成功连接到MongoDB');
  }
  catch (error) {
    console.error('无法连接到MongoDB:', error);
    process.exit(1); // 如果连接失败，终止应用
  }
}
